/**
 * @ProjectName: p2p_core_sina 
 * @Copyright: Copyright (c) 2016, qudoulicai All Rights Reserved. 
 * @address: Hangzhou City, Zhejiang Province, China
 * @date: 2016年1月18日 上午11:39:56
 * @Description: 微信菜单
 */
package com.qdlc.p2p.biz.service;


import com.qdlc.p2p.dal.dto.WeChatMenu;
import com.qdlc.p2p.dal.model.WeChatMenuModel;

import java.util.List;

/**
 * <p>微信菜单service接口</p>
 * @author Kaiju Zhao 2016年1月18日 下午2:15:23
 * @version V1.0   
 * @modificationHistory=========================逻辑或功能性重大变更记录
 * @modify by user: {修改人} 2016年1月18日 下午2:15:23
 * @modify by reason:{原因}
 */
public interface WeChatMenuService {
    
    /**
     * <p>添加微信菜单</p>
     * @author Kaiju Zhao 2016年1月18日 下午2:26:43
     * @param weChatMenu
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 下午2:26:43
     * @modify by reason:{原因}
     */
    WeChatMenu addWeChatMenu(WeChatMenu weChatMenu);
    
    /**
     * <p>更新微信菜单</p>
     * @author Kaiju Zhao 2016年1月18日 下午2:27:50
     * @param weChatMenu
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 下午2:27:50
     * @modify by reason:{原因}
     */
    WeChatMenu updateWeChatMenu(WeChatMenu weChatMenu);
    
    /**
     * <p>根据id查询正常的微信菜单</p>
     * @author Kaiju Zhao 2016年1月18日 下午2:28:52
     * @param id
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 下午2:28:52
     * @modify by reason:{原因}
     */
    WeChatMenu findWeChatMenuById(long id);
    
    /**
     * <p>删除微信菜单(逻辑删除)</p>
     * @author Kaiju Zhao 2016年1月18日 下午2:32:43
     * @param weChatMenu
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 下午2:32:43
     * @modify by reason:{原因}
     */
    void deleteWeChatMenu(WeChatMenu weChatMenu);

    /**
     * <p>根据菜单状态来获取菜单</p>
     * @author Kaiju Zhao 2016年1月18日 上午11:52:35
     * @param isDelete 
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 上午11:52:35
     * @modify by reason:{原因}
     */
    List<WeChatMenu> listByIsDelete(boolean isDelete);
    
    /**
     * <p>根据parentId删除子类菜单信息(逻辑删除)</p>
     * @author Kaiju Zhao 2016年1月18日 上午11:56:15
     * @param parentId
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 上午11:56:15
     * @modify by reason:{原因}
     */
    void deleteByParentId(long parentId);

    /**
     * <p>根据parentId和菜单状态来获取菜单</p>
     * @author Kaiju Zhao 2016年1月18日 下午12:02:11
     * @param parentId
     * @param isDelete
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 下午12:02:11
     * @modify by reason:{原因}
     */
    List<WeChatMenuModel> listByParentIdAndIsDelete(long parentId, boolean isDelete);
    
    /**
     * <p>根据菜单状态来获取菜单(属性拷贝的方法)</p>
     * @author Kaiju Zhao 2016年1月18日 下午5:25:58
     * @param isDelete
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 下午5:25:58
     * @modify by reason:{原因}
     */
    List<WeChatMenuModel> listModelsByIsDelete(boolean isDelete);
    
    /**
     * <p>根据菜单层级和状态来获取菜单列表信息</p>
     * @author Kaiju Zhao 2016年1月19日 下午2:49:30
     * @param level
     * @param isDelete
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月19日 下午2:49:30
     * @modify by reason:{原因}
     */
    List<WeChatMenuModel> listByLevelAndIsDelete(byte level, boolean isDelete);
    
}
